perm filename A49.TEX[106,RWF]1 blob sn#790305 filedate 1985-03-25 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	\rm
C00005 ENDMK
C⊗;
\rm
\magnification=\magstep2
\def \ip#1{\par\penalty-1000\noindent\hangindent20pt\hangafter1
\hbox to 20pt{#1\hfill}\ignorespaces}

\def\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}

\line{\sevenrm A49.tex[106,rwf] \today\hfill}

\vskip .25in

\noindent
Problem-Solving Principles

\vskip .125in

When a programming problem seems too hard to make progress on, here are some
standard paradigms $\lbrack$ Polya $\rbrack$ for getting started:

\ip{(1)}
Is there a special case which is easier than the general problem, for which a
solution would help with the general problem?

Example: I want a formula for the area of a polygon, given the coordinates of
its vertices. If I can solve the problem for triangles, I may be able to cut
all other polygons into triangles.

\ip{(2)}
Is there some more general problem I should be looking at, with my original
problem as a special case?

Example: I am trying to design an algorithm to compute $A↑B$, for $O≤B$ an
integer. A more general problem is to compute $A↑B\times C$. 
By setting $C=1$, an algorithm for the general problem solves the more
specialized one. The more general problem suggests the operations

$B:=B-1;\; C:=C*A.$

\noindent
and (when B is even)

$B:=B\;DIV\; 2;\; A:=A*A.$

\vfil\end